package com.stm.bi.repository.report;

import com.stm.framework.core.util.StringUtil;
import org.springframework.stereotype.Repository;
import com.stm.framework.repository.BaseRepository;
import com.stm.bi.dto.vo.ReportStandardVO;
import com.stm.bi.repository.report.mapper.ReportStandardMapper;
import com.stm.bi.repository.report.dataobject.ReportStandardDO;
import com.stm.bi.dto.query.ReportStandardListQry;
import com.stm.bi.dto.query.ReportStandardPageQry;
import com.stm.framework.model.CustomizePage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import java.util.List;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.stm.framework.core.tookit.BeanToolkit;
/**
* 报表模型水准-仓储
*
* @author zhouyuanpeng
* @date 2025-05-22
*/
@Repository
public class ReportStandardRepository extends BaseRepository<ReportStandardMapper, ReportStandardDO, ReportStandardVO> {


    /**
    * 报表模型水准分页查询
    * @param reportStandardPageQry 报表模型水准查询入参对象
    * @return
    */
   public CustomizePage<ReportStandardVO> selectPage(ReportStandardPageQry reportStandardPageQry){
	LambdaQueryWrapper<ReportStandardDO> queryWrapper = buildeQueryWrapper(reportStandardPageQry);
        IPage<ReportStandardDO> page = new Page(reportStandardPageQry.getPageNum(),reportStandardPageQry.getPageSize());
        page = this.baseMapper.selectPage(page, queryWrapper);
        CustomizePage<ReportStandardVO> customizePage = new CustomizePage(BeanToolkit.instance().copyList(page.getRecords(), ReportStandardVO.class), page.getSize(), page.getCurrent(), page.getTotal());
        return customizePage;
   }
    /**
    * 报表模型水准列表查询
    * @param reportStandardListQry 报表模型水准查询入参对象
    * @return
    */
   public List<ReportStandardVO> selectList(ReportStandardListQry reportStandardListQry){
	LambdaQueryWrapper<ReportStandardDO> queryWrapper = buildeQueryWrapper(reportStandardListQry);
        List<ReportStandardDO> records = this.baseMapper.selectList(queryWrapper);
        return BeanToolkit.instance().copyList(records, ReportStandardVO.class);
   }
   private LambdaQueryWrapper buildeQueryWrapper(ReportStandardListQry reportStandardListQry){
	LambdaQueryWrapper<ReportStandardDO> queryWrapper = Wrappers.<ReportStandardDO>lambdaQuery()
                .eq(StringUtil.isNotEmpty(reportStandardListQry.getModelId()),ReportStandardDO::getModelId,reportStandardListQry.getModelId())
                .eq(StringUtil.isNotEmpty(reportStandardListQry.getName()),ReportStandardDO::getName,reportStandardListQry.getName())
                .eq(StringUtil.isNotEmpty(reportStandardListQry.getStatus()),ReportStandardDO::getStatus,reportStandardListQry.getStatus())
                .orderByAsc(ReportStandardDO::getIdx);
        return queryWrapper;
   }
}
